package liecai_class.day06;

/**
 * 交换机 Exchanger
 */
public class Demo07 {
    private static String msg = null;
    public static void main(String[] args) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep(2000);
                    if(msg == null){//先到的人
                        //将自己的消息放上去
                        msg = "天王盖地虎";
                        //进入阻塞状态，等待对方放消息
                        synchronized (Demo07.class){
                            Demo07.class.wait();
                        }
                        //获取对方的数据
                        System.out.println("线程1得到对方的消息:"+msg);
                    }else{//后到的人
                        //获取对方放置的消息
                        System.out.println("线程1得到对方的消息："+msg);
                        //将自己的消息放上去
                        msg = "小鸡炖蘑菇";
                        //把对方叫醒
                        synchronized (Demo07.class){
                            Demo07.class.notify();
                        }
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep(5000);
                    if(msg == null){//先到的人
                        //将自己的消息放上去
                        msg = "小鸡炖蘑菇";
                        //进入阻塞状态，等待对方放消息
                        synchronized (Demo07.class){
                            Demo07.class.wait();
                        }
                        //获取对方的数据
                        System.out.println("线程2得到对方的消息:"+msg);
                    }else{//后到的人
                        //获取对方放置的消息
                        System.out.println("线程2得到对方的消息："+msg);
                        //将自己的消息放上去
                        msg = "小鸡炖蘑菇";
                        //把对方叫醒
                        synchronized (Demo07.class){
                            Demo07.class.notify();
                        }
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }
}
